#define _CRT_SECURE_NO_WARNINGS 1
01.man指令
Linux 的命令有很多参数，我们不可能全记住，我们可以通过查看联机手册获取帮助。访问 Linux 手册页的命令是：
man 语法 : man[选项] 命令




解释：

1：用man 查自己的时候，可以知道 man有九个手册供我们去查询，左上角的man（1）代表，我们查询man时候，在第一个手册中查到了，现在即使后面会再有man，也不会去查找了

2：九个手册，第三个是C语言库。

a：man ls


解释：我们用man 去查询 ls，左上角可知，在man 的第一个手册中查询到了ls，可以知道ls 的所有相关的东西

b：man  printf




解释： 我们查printf的时候，是在第一个手册中查到的，竟然不是第三个C语言库手册中，所以printf再Linux中也是一个指令，我们现在指定手册查收printf试试

c：man 3 printf




总结：
1：man 可以指定手册查找 :

2：man 默认从上往下查找

02. nano指令


解释：该目录下无任何东西，此时nano一个文件，按下回车，则：



解释：在nano出的file.txt文件中，写了一个简答的C语言打印 ，然后按ctrl + x，进行退出



解释：在按y，回车

解释：此时再tree一下，就看到了nano出来的file.txt

总结：
nano相当于windows的新建一个记事本，在里面写东西。

03. cp指令
语法 ： cp[选项] 源文件或目录 目标文件或目录
功能 : 复制文件或目录
a：不同级目录下文件的cp


解释：把目录dir4下的 文件 file.txt cp到了 dir4的商家目录dir3中，此时tree的时候，发现dir3和dir3都有file.txt

b：同级目录下文件的cp

解释：同级目录下，不允许存在同名文件或目录，这是一个常识, 这里想把当前目录下的file.txt文件，再复制到当前目录，这是错的。

正确方法：

同级目录下的相同名字文件的复制：



解释：cp file.txt  file.txt.2 才是对的，这等同于，在当前目录下创建了一个与file.txt内容相同的文件，只是名字不同，变成了file.txt.2

展示内容相同：

解释：通过cat打印出了 file.txt.2 的内容，可知 file.txt.2 的文件内容和 file.txt 的内容是相同的

注意：不要cp file.txt.file.txt.2 ，多的一个点是错的，代表你把 file.txt.2 变成了.file.txt.2，后者是一个隐藏文件，而不是我们的本意

c：不同级目录下目录的cp


解释：和目录的删除一样，目录的复制不能直接cp，要cp - r



解释：把dir3目录下的dir4目录 cp到了dir2 中，dir2和dir3都有了dir4这个目录。

d：同级目录下目录的cp


解释：把当前目录下的dir4目录，改了个名，复制到了当前目录下

错误示范：



解释：不修改名字就会报错

也可以把dir4 cp 到 dir4中：



解释：into itself ，也就是把dir4 放进了 dir4 自己里面

e：把一个目录下的所有东西拷贝进另一个目录


解释：把dir1目录内的dir2，cp到了另一个目录110中（dir1的上级目录） cp - rf * ..

其中cp - rf 后面没有路径，就是默认当前的路径，所有此时 * 就代表当前的路径的全部目录以及文件，然后 ..就代表拷到到的地方（目的地）。

总结：
cp不能进行同名的cp

cp默认不包括隐藏文件

04. mv指令
语法 : mv[选项]  源文件或目录 目标文件或目录
功能 : 用来移动文件或者将文件改名


a： mv 文件1 到不存在的文件2


解释：将file.txt mv 到 file.txt.3中，后者不存在，所以file.txt直接重命名成file.txt.3

b：mv 文件1 到存在的文件2




解释：

1： 将file.txt.3 mv 到 file.txt.2中，后者存在，file.txt.2文件会被删除，而file.txt.3 重命名成了file.txt.2，放在同级目录中

2：和1是一样的，将file.txt.3 mv 到非同级目录的 file.txt.2中，后者存在，file.txt.2文件会被删除，而file.txt.3 重命名成了file.txt.2，放在了该非同级目中

c：mv 文件1 到不存在的目录


解释：就是重命名文件1为这个目录的名字，目录不存在，该目录其实就是一个名字而已，而a是一样的，文件不存在，该文件也就是一串名字

d：mv 文件1 到存在的目录


解释：到本级目录，就是文件同名了，会报错，到非本级目录，就是剪切过去

e：mv 目录1 到存在的文件


解释：不管是把当前目录的目录 mv 到 哪里的文件，都是错误的，因为：文件系统不允许用目录替换文件，因为这会删除原始文件的内容

f：mv 目录1 到不存在的文件


解释：和a是一样的，你文件不存在，该文件也就是一串名字， 会将dir1重命名为file.tx2

g：mv 目录1 到存在的目录2


解释：虽然目录2存在，但是是自己的子目录，这是不行的， 不允许你将一个目录移动到它自己的子目录中，因为这会导致文件系统结构上的循环。



解释：将dir4剪切到dir2下了

h：mv 目录1 到不存在的目录2


解释：同上文，重命名dir1为dir2

05. which指令


解释：

1：查看指令在系统的什么目录下 ，ls在 / usr / bin / ls中

2：指令其实内部就是程序，你用一个指令，其实该指令回去执行对应的程序

安装自制指令：
a :



解释：因为指令是程序，所以我们nano一个testt.c 的文件出来

b：



解释：在该文件中写一个简单的打印函数

c：



解释：gcc 以下这个.c文件，会得到一个a.out的可执行程序

d：



解释：要执行这个可执行程序，必须. / a.out，而不能a.out，但我们执行指令的时候，比如ls，我们并没有. / ls，所以我们继续：

e :



解释：先重命名一下a.out为mycmd，好看一点 ，重命名依旧是要. / mycmd才能执行程序

f：



解释：把mycmd放进一开始的ls的目录中，此时发现直接mycmd都能执行程序了

卸载自制指令：


解释：卸载即rm掉这个指令就行了，卸载后回到从前，依旧是. / mycmd才能执行

06. alias指令


解释：为ls - l 起了一个别名110 ，输入110 即达到了ls - l的效果

07. echo指令
用于在标准输出（通常是终端或屏幕）上显示一行文本或变量的值

在Linux中有一个思想：万物皆文件
解释：
1：文件都有读和写，读或写可能其一为空

2：比如键盘我们用的时候，键盘就是读入我们打的东西，但是键盘不会写

3：比如显示器，它会写也就是显示东西给我们看，但是它不会读



解释：可知，echo在打印的同时，还自带回车 ，根据思想理解成，echo向显示屏输出了东西，显示器就显示了hhhhh

08. cat指令
语法：cat[选项][文件]

功能： 查看目标文件的内容



解释：cat可以读取我们键盘上输入的东西 ，再向显示器传达



解释：cat可以读取文件里面的内容，再向显示器传达

- b 对非空输出行编号
- n 对输出的所有行编号
- s 不输出多行空行
a： tac指令


解释：tac 显示文件的行是逆序的，和cat相反

09. > ：输出重定向
a： > 输出重定向到已存在文件


解释： > 这个符号是输出重定向，这是是一个重要的功能，它允许用户将命令的输出从标准输出（通常是终端或屏幕）重定向到其他地方 ，比如图中给的file.txt

b： > 输出重定向到不存在文件


解释：file.txt不存在的时候，会创建再写入

c： > 不输出直接重定向到不存在文件


解释：甚至可以不写入，用来创建一个文件



解释： 但是当文件有内容的时候，只进行 > 操作的时候，会情况文件

总结： > 的作用
1：可以将标准输出重定向到其他地方

2：可以新建文件

3：可以情况文件

10. >> ：追加重定向


解释：发现不断地 > ，结果并没有把每次 > 在文件中的内容进行打印出来，而是清空上一次，再去接收下一次



解释： >> 就解决了这个问题

11. < ：输入重定向


	解释：我们已经知道了，cat默认向键盘这个文件中读东西



	解释：通过 < 来把cat默认从键盘中读取，变成了从文件中读取

	和cat file.txt.3必然是有区别的，不过一言两语说不清楚，以后说，这里体现 < 的作用就行了、

	12. more指令
	语法 ： more[选项][文件]
	功能 ： more 命令，功能类似 cat


	解释：循环向一个file.txt文件中写入0 - 100



	解释：然后more file.txt, 发现显示了一满屏的内容，此时回车一下，数字才又出现一个，不能上下翻阅数字，只能回车往下一个一个的看。

	13. less指
	less 工具也是对文件或其它输出进行分页显示的工具，应该说是linux正统查看文件内容的工具，功能极其强大。
	less 的用法比起 more 更加的有弹性。在 more 的时候，我们并没有办法向前面翻， 只能往后面看
	但若使用了 less 时，就可以使用[pageup][pagedown] 等按键的功能来往前往后翻看文件，更容易用来查看一个文件的内容！
	除此之外，在 less 里头可以拥有更多的搜索功能，不止可以向下搜，也可以向上搜


	解释：用less后，发现不仅可以回车往下，还可以上下的翻看。

	14. head指令
	head 与 tail 就像它的名字一样的浅显易懂，它是用来显示开头或结尾某个数量的文字区块，head 用来显示档案的开头至标准输出中，而 tail 想当然尔就是看档案的结尾。

	语法： head[参数]...[文件]...
	功能 ：
	head  用来显示档案的开头至标准输出中，默认 head 命令打印其相应文件的开头 10 行。




	15. tail指令
	tail  命令从指定点开始将文件写到标准输出.使用 tail 命令的 - f 选项可以方便的查阅正在改变的日志文件, tail - f filename会把 filename 里最尾部的内容显示在屏幕上, 并且不但刷新, 使你看到最新的文件内容 .
	语法： tail[必要参数][选择参数][文件]
	功能： 用于显示指定文件末尾内容，不指定文件时，作为输入信息进行处理。常用查看日志文件。


	问题：怎么显示中的第40到50行？
	A：先head再tail 或者 先tail再head



	解释： 先用head提取前50行到一个tmp.txt文件中，再对tmp.txt这个文件进行tail10行即可。

	缺点：需要一个临时文件
	16. 管道 |
	竖线符号 | 称为“管道符”，它的作用是将一个命令（程序）的标准输出（stdout）重定向为另一个命令的标准输入（stdin）。这样，第一个命令的输出结果就可以作为第二个命令的输入数据。



	解释：head - 50 file.txt 的输出，成为了tail - 10的输入



	甚至可以：




	————————————————

	版权声明：本文为博主原创文章，遵循 CC 4.0 BY - SA 版权协议，转载请附上原文出处链接和本声明。

	原文链接：https ://blog.csdn.net/shylyly_/article/details/142671787